﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 实验1._2_二维数组排序
{
    class Program
    {
        static void Main(string[] args)
        {
            int n, m;
            int[,] a;   // 定义二维数组
            n = Convert.ToInt32(Console.ReadLine());
            m = Convert.ToInt32(Console.ReadLine());
            a = new int[n, m];
            // 录入数据
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < m; j++)
                {
                    a[i, j] = Convert.ToInt32(Console.ReadLine());
                }
            }
            // 排序
            int sum = n * m;
            for (int i = 0; i < sum; i++)
            {
                int mini = i;
                // 遍历，寻找最小元素下标
                for (int j = i + 1; j < sum; j++)
                {
                    if (a[j / m, j % m] < a[mini / m, mini % m])
                    {
                        mini = j;   // 记录最小元素
                    }
                }
                // 交换元素，将最小元素移动到最前面
                swap(ref a[i / m, i % m], ref a[mini / m, mini % m]);
            }
            
            // 输出排序后的数组
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < m; j++)
                {
                    Console.Write(a[i, j] + " ");
                }
            }
            Console.WriteLine();
        }
        private static void swap(ref int a, ref int b)
        {
            int temp = a;
            a = b;
            b = temp;
        }
    }
}
/*
 * 测试数据， a[2][3]
2
3
6
3
5
1
2
4
*/